/*
* This file is a part of the open-eBackup project.
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
* If a copy of the MPL was not distributed with this file, You can obtain one at
* http://mozilla.org/MPL/2.0/.
*
* Copyright (c) [2024] Huawei Technologies Co.,Ltd.
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*/
#ifndef WIN32_HARDLINK_WRITER_H
#define WIN32_HARDLINK_WRITER_H
 
#include "HostHardlinkWriter.h"
#include "BlockBufferMap.h"
#include "ThreadPool.h"
#include "OsPlatformDefines.h"
 
class Win32HardlinkWriter : public HostHardlinkWriter {
public:
    explicit Win32HardlinkWriter(
        const WriterParams &hardlinkWriterParams,
        std::shared_ptr<Module::BackupFailureRecorder> failureRecorder);
    ~Win32HardlinkWriter();
 
private:
    void ProcessWriteEntries(FileHandle& fileHandle) override;
    void ProcessWriteData(FileHandle& fileHandle) override;

    std::shared_ptr<Win32BackupAdvanceParams>    m_winDstAdvParams;
};
 
#endif // WIN32_HARDLINK_WRITER_H